iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

隨著 CSS 開始越來越複雜,由於 CSS 語法受限而發展出了 CSS Pre-/Post-processors (預處理和後處理) 來拓展和優化寫法。

什麼是 Preprocessor (預處理器)

CSS 預處理器是個能透過該預處理器語法,產生純 CSS 的程式。

CSS 預處理器主要有 Sass/SCSS、Stylus、Less 三種。

處理器會加入 CSS 所沒有的功能像是 mixin、巢狀選擇器、繼承選擇器等等,增加 CSS 結構的可讀性、可維護性。

預處理器可以想像成女孩子的底妝組、眼妝組等等,將相同類型的化妝品進行分類和優化增加組合搭配的方便性。

Sass/SCSS

Sass/SCSS 讓 CSS 成為真正的程式語言,這篇文章主要以 SCSS 來做介紹

  • 變數使用
  • 判斷/迴圈
  • 巢狀結構
  • @mixin/@extend

變數使用

使用定義主色調,這樣在未來需要調整主色調時速度會快很多,不用全部搜尋再取代還擔心取代錯誤。

$primary-color: #ffffff;
$second-color: #000000;

巢狀結構

巢狀結構減少重複輸入 parent 的選擇器,可以少打一些字。

// CSS
.list {
  display: flex;
}

.list li {
  background-color: black;
}

.list li a {
  color: white;
}

// SCSS
.list {
  display: flex;

  li {
    background-color: black;

    a {
      color: white;
    }
  }
}

@mixin

@mixin 的做法是可以帶入變數,然後生成客製化樣式,譬如當同樣的一個版但需要套不同圖或是顏色,這樣的做法就會非常方便,mixin 搭配 [rwd 的寫法][1]

@mixin setSpecail($size, $color) {
  font-size: $size;
  color: $color;
}
.IAmSpecailOne {
  @include setSpecail(sizeOne, colorOne);
}
.IAmSpecailTwo {
  @include setSpecail(sizeTwo, colorTwo);
}

@extend

@extend 就比較單純可以當成注入性質。

%button {
  width:80 px ;
  height:40 px ;
}

.button--primary {
  @extend  %button ;
  background-color:white ;
}

.button--success {
  @extend  %button ;
  background-color:green;
}
.button--error {
  @extend  %button ;
  background-color:red;
}

什麼是 postprocessor (後處理器)

CSS 後處理器是讓 CSS 經過擴充功能 (plugin) 後製處理,這裡介紹以 PostCSS 為主。

  • Autoprefixer 會協助加入跨瀏覽器支援的相關前綴詞 (prefix) -webkit-、-moz-,來源是 Can I Use
  • stylelint: 語法檢查和報錯
  • lost: Grid System

PostCSS 通常會和 Webpack、Grunt、Parcel、Gulp 等打包工具一起使用,可以想像成是女孩子隨時能補的 BB 霜。

後處理器著重在防呆和支援性,接下來以加入 Autoprefixer 為例,使用方法非常簡單。

  1. npm install postcss postcss-loader autoprefixer precss --save-dev
  2. postcss.config.js
module.exports = {
  plugins: [require("autoprefixer")],
};

不過還是要注意像是隱藏 Scroll Bar 這類特殊的用法還是要自己處理

.hide-scrollbar {
  overflow: auto;
  -ms-overflow-style: none; /* IE 11 */
  scrollbar-width: none; /* Firefox 64 */
}

上一篇
透過 BEM、SMACSS、OOCSS、Atomic CSS 簡化樣式開發流程、減少維護成本 (4)
下一篇
CSS 框架用了什麼設計模式 (6)
系列文
前端三分鐘 X 從把妹角度理解前後端如何和平相處30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言